// P1328 [NOIP 2014 提高组] 生活大爆炸版石头剪刀布
//#include <iostream>
//#include <vector>
//using namespace std;
//// A 对 B 
//vector<vector<int>> vv(5,vector<int>(5));
//void A_B()
//{
//	
//vv[0][0] = vv[1][1] = vv[2][2] = vv[3][3] = vv[4][4] = 0;
//vv[0][1] = vv[1][2] = vv[2][3] = vv[0][4] = vv[1][4] = -1;
//vv[0][2] = vv[0][3] = vv[1][3] = vv[2][4] = vv[3][4] = 1;
//vv[1][0] = vv[2][1] = vv[3][2] = vv[4][0] = vv[4][1] = 1;
//vv[2][0] = vv[3][0] = vv[3][1] = vv[4][2] = vv[4][3] = -1;
//} 
// 
//int main()
//{
//	A_B();
//	int N,Na,Nb;
//	cin >> N >> Na >> Nb;
//	vector<int> va(Na);
//	vector<int> vb(Nb);
//	for(int i = 0; i < Na; i++)
//	{
//		cin >> va[i];		
//	}
//	for(int j = 0; j < Nb; j++)
//	{
//		cin >> vb[j];
//	}
//	int A = 0,B = 0;
//	
//	for(int k = 0; k < N; k++)
//	{
//		if(vv[va[ k % Na]][vb[ k % Nb]] == 0)
//		{
//			continue; 
//		}
//		else if(vv[va[ k % Na]][vb[ k % Nb]] == -1)
//		{
//			B++;
//		}
//		else
//		{
//			A++;
//		}
//	}
//	cout << A << " " << B;
//	return 0;	
//} 

//接龙数列 
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
	long long N = 0;
	cin >> N;
	vector<long long> A(N);

	for(long long i = 0; i < N; i++) cin >> A[i];
	int ret = 0;
	vector<int> dp(10);
	// dp[i]表示以最后数的最后一个为结尾，如果以最后数的最后一个为结尾，要么是他自己，要么就是dp[begin] + 1 
	for(int i = 0; i < N; i++)
	{
		string s = to_string(A[i]);
		int begin = s[0] - '0';
		int end = s[s.size() - 1] - '0';
		dp[end] = max(dp[end],dp[begin] + 1); 
		ret = max(ret,dp[end]); 
	}
	cout << N - ret;		
}